package inabit.impl.data;


import inabit.data.Variable;
import inabit.impl.data.types.EnumeratedType;

import java.util.ArrayList;
import java.util.List;
/**Variable that can assume one value from the specified set
 * @author Rafael Rocha*/
public class EnumeratedVariable extends Variable{
	
	
	public EnumeratedVariable(String id, String[] permittedValues) {
		super(id, new EnumeratedType(permittedValues));
		tryAssignValue();
		save();
	}

	@Override
	public void tryAssignValue() {
		EnumeratedType type = (EnumeratedType)getType();
		List<String> possibleValues = new ArrayList<String>();
		for(String s : type.getPossibleValues()){
			possibleValues.add(s);
		}
		possibleValues.removeAll(getInfo().getDifferentValues());
		if(possibleValues.size() == 1){
			setValue(possibleValues.get(0));
		}
	}
}
